package controller;

import com.vividsolutions.jts.geom.Point;
import dao.PontoGastronomicoDAO;
import java.util.ArrayList;
import java.util.List;
import model.PontoGastronomico;
import view.PontoGastronomicoBean;

/**
 *
 * @author Lucas S Bueno
 */
public class PontoGastronomicoController implements BasicControllerInterface<PontoGastronomicoBean> {

   @Override
   public boolean salvar(PontoGastronomicoBean obj) {
      if (obj == null) {
         return false;
      }
      
      return new PontoGastronomicoDAO().salvar(new PontoGastronomico(obj));
   }

   @Override
   public List<PontoGastronomicoBean> recuperar() {
      List<PontoGastronomicoBean> pontos = new ArrayList<PontoGastronomicoBean>();
      
      for (PontoGastronomico ponto : new PontoGastronomicoDAO().recuperar()) {
         pontos.add(new PontoGastronomicoBean(ponto));
      }
      
      return pontos;
   }

   @Override
   public PontoGastronomicoBean recuperar(int id) {
      PontoGastronomico pontoGastronomico = new PontoGastronomicoDAO().recuperar(id);
      
      if (pontoGastronomico == null) {
         return null;
      } else {
         return new PontoGastronomicoBean(pontoGastronomico);
      }      
   }
   
   public List<PontoGastronomicoBean> recuperar(String tipos, String estilos, Point pontoInicial, int raio, float preco, String descricao, String horaA, String horaF, float avaliacao, boolean aberto) {
      List<PontoGastronomicoBean> pontos = new ArrayList<PontoGastronomicoBean>();
      
      for (PontoGastronomico ponto : new PontoGastronomicoDAO().recuperar(tipos, estilos, pontoInicial, raio, preco, descricao, horaA, horaF, avaliacao, aberto)) {
         pontos.add(new PontoGastronomicoBean(ponto));
      }
      
      return pontos;      
   }

   @Override
   public boolean atualizar(PontoGastronomicoBean obj) {
      if (obj == null) {
         return false;
      }
      
      return new PontoGastronomicoDAO().atualizar(new PontoGastronomico(obj));
   }
   
   public boolean atualizar(int id, float gastos, int avaliacao) {
      return new PontoGastronomicoDAO().atualizar(id, gastos, avaliacao);
   }

   @Override
   public boolean deletar(PontoGastronomicoBean obj) {
      if (obj == null) {
         return false;
      }
      
      return new PontoGastronomicoDAO().deletar(new PontoGastronomico(obj));
   }   
}
